# # 创建了一个类
# class MyClass:
#     x = 5  # 属性
#
#
# # 根据MyClass类，创建一个对象(实例)p1
# p1 = MyClass()
# print(p1.x)

#
# class Person:
#
#     def __init__(self, name, age):
#         # 注意：每次使用该类创建新对象时，都会自动调用 __init__() 函数
#         self.name = name
#         self.age = age
#
#     def myfunc(self):
#         print("Hello my name is " + self.name + 'my age is ' + str(self.age))
#
#     def __str__(self):
#         return f'{self.name}-（{self.age}）'
#
#
# # 根据Person的类，创建了一个名为person_1的对象
# # person_1 = Person('王鑫', 29)
# # print(person_1)
# # print(person_1.name)
# # print(person_1.age)
#
# person_2 = Person('王鑫2', 23)
# person_2.myfunc()
# # print(person_2)
#
# person_3 = Person('王鑫3', 255)
# person_3.myfunc()
# # print(person_3)
# #
# person_4 = Person('王鑫4', 2232)
# person_4.myfunc()
# # print(person_4)

#
# class Dog:
#
#     def __init__(self, nick_name):
#         # 注意：每次使用该类创建新对象时，都会自动调用 __init__() 函数
#         self.nick_name = nick_name
#
#
# d1 = Dog('小黄')
# print(d1.nick_name)
# print(d1)
#
#
# # 修改属性
# d1.nick_name = '小黑'
# print(d1.nick_name)
#
# # 删除属性
# # del d1.nick_name
# # print(d1.nick_name)
#
# # 删除对象
# del d1
# print(d1)

# class Cat:
#     pass
#
#
# print(Cat)
#
# class Person:
#
#     def __init__(self, fname, lname):
#         self.first_name = fname
#         self.last_name = lname
#
#     def print_name(self):
#         print(self.first_name, self.last_name)
#
#
# class Student(Person):
#
#     def __init__(self, fname, lname, year):
#         # 方法一
#         # Person.__init__(self, fname, lname)
#         # 方法二
#         super().__init__(fname, lname)   # 写法一
#         # super(Student, self).__init__(fname, lname)  # 写法二
#
#         self.ruxue_year = year
#
#     def welcome(self):
#         print("你好", '我是', self.ruxue_year, '届学生', self.first_name, self.last_name)
#
#
# # 使用Person类创建一个对象，然后执行print_name方法：
# # x = Person("乔布斯", "史蒂芬")
# # x.print_name()
# # print(type(x))  # 查看类别
#
# # 根据子类创建一个对象，实例化
# y = Student("Mike", "Olsen", 2020)
# y.print_name()
# y.welcome()
# # print(type(y))  # 查看类别
#
#
# # 入学年份


# 多态性（Polymorphism）
class Bird:
    """鸟类"""

    def intro(self):
        print("有很多种类的鸟")

    def flight(self):
        print("大部分鸟是会飞的，但也有不会的")


# 第一个子类
class sparrow(Bird):
    """麻雀类"""

    def flight(self):
        print("麻雀可以飞")


# 第二个类
class ostrich(Bird):
    """鸵鸟类"""

    def flight(self):
        print("鸵鸟不会飞")


obj_bird = Bird()  # 创建了一个鸟的实例
obj_spr = sparrow()  # 创建了一个麻雀的实例
obj_ost = ostrich()  # 创建了一个鸵鸟的实例

obj_bird.intro()  # 鸟实例在自我介绍
obj_bird.flight()  # 鸟实例 调用 飞行

obj_spr.intro()  # 麻雀实例在自我介绍
obj_spr.flight()  # 麻雀实例 调用 飞行

obj_ost.intro()  # 鸵鸟实例在自我介绍
obj_ost.flight()  # 鸵鸟实例 调用 飞行
